1. Field of the Invention
Embodiments of the invention described herein pertain to the field of computer systems. More particularly, but not by way of limitation, one or more embodiments of the invention enable a multi-user document editing system and method enabling multiple users to simultaneously edit a document associated with a database.
2. Description of the Related Art
Current document sharing systems lack an effective mechanism for enabling multiple users to simultaneously edit a given document associated with a database and observe and control with a fine level of granularity modifications occurring on the document. Instead document-sharing systems that provide layout manipulation on more than one system generally allow one user at a time to edit a given document. Examples of such products include desktop publishing and word processing programs. If one person is already using a document that is available on a shared resource other users that wish to also edit the document must wait for one another to finish editing before access to the document is permitted. Some document sharing systems rely on an underlying database to lock the document, however database systems that lock data on a record-by-record basis generally enabled serial editing but do not permit users to work efficiently in parallel.
Current systems may provide a read only view for example of data and/or deny an update when another user has locked a record. Since the underlying architecture of existing document sharing systems is document oriented and tied to the architecture of the database, these systems fundamentally fail to provide multi-user simultaneous editing. In addition, since many document sharing systems utilize presentation data that is intermixed with the data content itself, large numbers of records must be updated when changing simple formatting. When the number of users waiting to edit a document or portion thereof becomes high enough, the cost associated with producing a large enough document using this inefficient serial editing process makes publication too resource intensive for many organizations.
By breaking a document into various sub-documents, the problem can broken into a smaller set of problems. However, if one user decides to change the layout of a sub-document and the other users editing the other sub-documents do not, then the overall look and feel of the document becomes disjointed and inconsistent. An inconsistent look and feel of a document is generally not desired. For example, a product catalog that has some sections in one font and another set of sections in another font is generally not desired. Maintaining the overall consistency of a document becomes unwieldly when the number of sub-documents grows. Therefore, although the problem is seemingly solved by breaking a document into smaller pieces, other problems related to consistency and maintenance arise.
Typical desktop publishing programs such as QUARKXPRESS® do not permit multiple users to simultaneous edit the presentation and content data. Whiteboard programs and instant messaging programs exist that allow multiple users to input data simultaneously to a common area that is generally delimited on a line by line or color basis per user. However, these programs are not associated with persistent data and the data that is altered by each user is generally edited locally before being added to the multi-user area of the associated program. Such programs are not capable of handling enterprise level publication data that requires robust persistence in a production environment and involves complex presentation layering of data.
Traditionally, shared document control systems permit viewing, or “checking out” a complete document by a single user. Once checked out, a document is “locked” and may be edited only by one person at a time. An example of this is MS SOURCESAFE™, a system that allows multiple users to check out a document and simultaneously edit a document, referred to as CVS or “Concurrent Version System”. This system merges changes back into the repository on a line-by-line basis after a particular user has checked in a document. Each user cannot see the changes that another user makes until all users have checked the file back into the repository. When two users check in a document where both users have changed the same portion of a file, a “collision” occurs, which requires time consuming review of the changes to determine which change (if either) should be retained. Since each user has his or her own local copy, changes that one user makes are not visible to the other user while the first user is in the process of making the changes. In addition, since CVS is generally used for change control with respect to software source code, it is generally more suited to content manipulation rather than presentation manipulation.
For at least the reasons described above there is a need for a multi-user document editing system and method that allows for users to simultaneously modify the presentation of a document simultaneously, or “in parallel.”